現在,讓我們看一下一個DevOps平台如何支持DevOps生命週期中的各個階段,消除瓶頸,加速從Business Idea到安全高質量產品的流動。
這個DevOps平台最少需要下列的能力:
拿一個銀行網站上簡單變動的開發周期來做例子好了。我們想像一個典型的網銀應該會有一個Frontend網站,Backend API Server,Database,Mainframe,和需要連到其他公司的API(例如VISA,Broadridge,TSYS,等等..)Product owner說我們需要修改一下主頁的外觀,並加入一個“記住選項”的Checkbox。
1. Agile Execution, Planning and Monitoring
產品負責人,開發人員和測試人員組成一個敏捷團隊,共同定義Business Requirements及User Stories。這些User Stories會被記錄在一個程序模型(Application Model)和agile planning software裡。
2. Continuous Integration
進入Sprint後,開發人員便以應用程序模型為基礎開始開發。當他們開發Checkbox及任何驗證其背後邏輯所需的代碼時,會將Source Code check-in到source code management中。Continuous Integration過程將構建代碼,檢查質量,並確保始終有一個隨時可deploy的前端應用程序版本在工件存儲庫(Artifact Repository)中。在構建代碼時進行的持續測試能向開發人員提供有關任何問題的即時反饋,因此可以立即修復,從而降低了更改失敗率(Change Failure Rate)。
3. Continuous Testing
當開發在進行中,測試人員採用了application model,並能夠從中生成檢查用例所需的test cases,以檢查修改主頁外觀和“記住選項”Checkbox所添加的所有可能行為以及開發人員進行測試所需的任何automation script或資料要求。
為了驗證我們新的主頁和checkbox是否正常工作,我們需要確保後端服務可用於支持我們的更改。不過這些服務仍在開發中,因此我們創建了虛擬服務(Virtual Services),因此我們不必等待後端服務完成就可以進行測試。測試人員和開發人員還需要生成測試資料(Test Data)以支持測試,因為這是一項新功能,並且尚不存在資料。
4. Continuous Delivery
當準備好部署代碼時,發布經理(release manager)決定將哪些功能以及我們新創建主頁和checkbox發佈到生產環境(production environment)中。他們通過預先創建的部署流程(Release automation)來完成這些任務,以確保所有環境的部署過程都相同。無論是從functional,performance,UAT一直到production。由於已經進行了很多次,因此部署到生產中不再是一個特別的事件,發布經理有信心在星期五進行部署,然後下班回家。
5. Continuous Monitoring & Security
代碼投入生產後,持續的監視功能將使操作人員可以監視應用程序的運行狀況和性能,以確保我們剛剛投入生產的新更改不會影響我們當前的應用程序功能和性能,並且可以發現並修復所有問題。 API管理還將確保創建的任何服務都不會暴露任何安全風險。
下一篇我會進入Agile Execution,詳細討論agile planning及user story tracking,敬請期待。
< 上一篇 Day02 - 淺談DevOps
> 下一篇 Day04 - Agile Project Management